Computer systems are widely used to store and manipulate data. Data is stored in computer system memory and manipulated by computer system programs executing on the computer system's processor. As is well known, a processor is often thought of as the “brains” of the computer system because it is the component within the computer system that executes the computer system's programs, allowing the computer system to do real work. Memory is used to hold computer programs while they are being executed by the processor, and to hold information (data) for access by the processor executing the computer programs.
One of the fundamental characteristics of a processor is its word-size. A processor's word size is usually the same as the width of the processor's registers, which are the local storage areas used to perform arithmetic and logical operations. When a computer system is described as being a 32-bit or a 64-bit computer, this is really a reference to the processor's word-size. Thus, when a processor performs an operation on behalf of a computer system or other device, it does so based upon its word-size. While processors are capable of performing many different operations, two of the most-used operations involve retrieving data from memory (i.e., the load operation) into its registers and placing data into memory (i.e., the store operation).
Implied within the notion of a load or a store operation is the notion of atomicity. Atomicity is basically just an assurance that an operation either completes entirely or not at all. Thus, when a load or a store operation executes on a processor, the processor enforces atomicity for the particular word being operated upon by the load or the store operation. Said another way, the processor ensures that the word is not partially loaded into a register or partially stored into memory. The problem addressed by this patent pertains to the need to atomically load more than one word.
Other existing solutions to the problem of atomically loading multiple words include requiring a lock to be held while loading and storing the multiple words, or using another memory word as a count field.
For the count field solution, before loading each word of the multi-word data, the count field must also be loaded and examined. Then, after the multi-word data is loaded, the count field is loaded and examined again. If the count in the count field has changed (the store code increments the count at the start and end of the store sequence), the load fails and must be attempted again.
The “lock” solution is undesirable because of the performance cost of acquiring and releasing the lock for each load. The count field solution is undesirable because the additional memory space requirements of the count field and the complexity involved with associating count fields with pre-defined word groupings.
Therefore, a need exists for efficient and atomic multi-word support that exceeds that provided by built-in processor capability.